package com.station.Activitys.adapter;

import android.annotation.SuppressLint;
import android.content.Context;
import android.graphics.Color;
import android.graphics.Paint;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.widget.TextView;

import com.station.Activitys.R;
import com.station.Activitys.adapter.base.BaseRecyclerViewAdapter;
import com.station.Activitys.bean.Survey;
import com.station.Activitys.utils.Constant;
import com.zhy.autolayout.utils.AutoUtils;

import java.util.List;

import butterknife.Bind;
import butterknife.ButterKnife;

/**
 * 项目名称：基站管理平台 手机app
 * 类描述：工单处理 适配器
 * 创建人：张飞祥
 * 创建时间：2018/8/27 17:10
 * 修改人：张飞祥
 * 修改时间：2018/8/27 17:10
 * 修改备注：
 */
public abstract class WorkAdapter extends BaseRecyclerViewAdapter {

    //上下文
    private Context mContext = null;
    //数据源
    private List<Survey> mList = null;
    //是否显示详情 flag |  true：显示，false：不显示
    private boolean detailsFlag = true;

    /**
     * 构造方法
     *
     * @param mContext
     * @param mContext
     * @param mList
     */
    public WorkAdapter(Context mContext, List<Survey> mList) {
        super(mContext, mList);
        this.mContext = mContext;
        this.mList = mList;
    }

    public WorkAdapter(Context mContext, List<Survey> mList,boolean detailsFlag) {
        super(mContext, mList);
        this.mContext = mContext;
        this.mList = mList;
        this.detailsFlag = detailsFlag;
    }

    @Override
    protected int getLayoutItemResId() {
        return R.layout.item_work;
    }

    @SuppressLint("ResourceAsColor")
    @Override
    public void onBindViewHolder(RecyclerView.ViewHolder viewHolder, final int position) {
        if (viewHolder instanceof WorkViewHolder) {

            //TODO 获取信息中心 viewHolder
            final WorkViewHolder holder = (WorkViewHolder) viewHolder;
            //TODO  将数据保存在itemView的Tag中，以便点击时进行获取
            holder.itemView.setTag(position);
            //获取第 i 个实体对象
            Survey survey = mList.get(position);
            //当前状态
            String state = survey.getState();
            //状态控件
            TextView tvState = holder.tvItemState;

            /**
             * 设置数据源
             */
            //勘察状态
            holder.tvItemState.setText(survey.getState());
            //基站名称
            holder.tvItemName.setText(survey.getPhysicalStationName());
            //省份
            holder.tvItemProvince.setText(survey.getProvince());
            //城市
            holder.tvItemCity.setText(survey.getLocalNetworkAddress());
            //网格
            holder.tvItemGrid.setText(survey.getGrid());
            //站型
            holder.tvItemType.setText(survey.getStationModel());
            //优先级
            holder.tvItemPriority.setText(survey.getPriority());
            //站址经度
            holder.tvGpsX.setText(survey.getGPS_X());
            //站址纬度
            holder.tvGpsY.setText(survey.getGPS_Y());
            //站址所属
            holder.tvItemTerritoriality.setText(survey.getHighSpeedRailwayStation());

            /**
             * 查看详情 判断
             * flag
             *       ----> true  显示布局
             *       ----> false 不显示布局
             */
            if (detailsFlag){
                //设置 "查看详情" 下划线
                holder.tvItemDetails.getPaint().setFlags(Paint.UNDERLINE_TEXT_FLAG);
                //点击事件
                holder.tvItemDetails.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View view) {
                        getItemDetails(position);
                    }
                });
            }else{
                //不显示 详情按钮
                holder.tvItemDetails.setVisibility(View.GONE);
            }

            /**
             *  判断 当前状态 的文字颜色
             *
             *  1.未通过勘察初审| 未通过规划初审          红色
             *    未通过可研审核| 未通过变更审核
             *
             *  2.通过规划初审  | 通过可研审核           绿色
             *    通过变更审核
             *
             *  3.完成变更                              蓝色
             *
             *  4.其他为 默认                           橙色
             *
             */
            if (state.equals(Constant.STATION_SURVEY_NO_FIRST) ||
                state.equals(Constant.STATION_PLAN_NO_FIRST)||
                state.equals(Constant.STATION_PLAN_NO_STUDY)||
                state.equals(Constant.STATION_CHANGE_NO_STUDY)){
                //红色
                tvState.setTextColor(Color.parseColor("#FF0000"));
            }else if (state.equals(Constant.STATION_SURVEY_YES_FIRST) ||
                      state.equals(Constant.STATION_PLAN_YES_STUDY) ||
                      state.equals(Constant.STATION_CHANGE_YES_STUDY)){
                //绿色
                tvState.setTextColor(Color.parseColor("#29cc29"));
            }else if (state.equals(Constant.STATION_CHANGE_COMPLETE)){
                //蓝色
                tvState.setTextColor(Color.parseColor("#1380ce"));
            }else{
                //橙色
                tvState.setTextColor(Color.parseColor("#fb8a11"));
            }
        }
    }

    /**
     * 清空全部数据
     */
    public void clearAll() {
        mList.clear();
        notifyDataSetChanged();
    }

    @Override
    public RecyclerView.ViewHolder getViewHolder(View view) {
        return new WorkViewHolder(view);
    }

    /**
     * 提供给外部 点击详情 事件
     */
    public abstract void getItemDetails( int position);

    /**
     * ViewHolder
     */
    public class WorkViewHolder extends RecyclerView.ViewHolder {

        //基站名称
        @Bind(R.id.tv_item_name) TextView tvItemName;
        //当前状态
        @Bind(R.id.tv_item_state) TextView tvItemState;
        //省份
        @Bind(R.id.tv_item_province) TextView tvItemProvince;
        //城市
        @Bind(R.id.tv_item_city) TextView tvItemCity;
        //网格
        @Bind(R.id.tv_item_grid) TextView tvItemGrid;
        //站型
        @Bind(R.id.tv_item_type) TextView tvItemType;
        //优先级
        @Bind(R.id.tv_item_priority) TextView tvItemPriority;
        //站址经度
        @Bind(R.id.tv_gps_x) TextView tvGpsX;
        //站址纬度
        @Bind(R.id.tv_gps_y) TextView tvGpsY;
        //站址所属
        @Bind(R.id.tv_item_territoriality) TextView tvItemTerritoriality;
        //详情信息
        @Bind(R.id.tv_item_details) TextView tvItemDetails;

        public WorkViewHolder(View itemView) {
            super(itemView);
            //初始化 控件绑定
            ButterKnife.bind(this, itemView);
            //初始化 屏幕适配
            AutoUtils.autoSize(itemView);
        }
    }
}
